package utils

/*
BigFloatPlus
大数加法，只适用于浮点数
*/
func bigFloatPlus(s1 string, s2 string) (plus string) {
	i1, d1 := toFloatArr(s1)
	i2, d2 := toFloatArr(s2)
	return toString(doBigFloatPlus(i1, d1, i2, d2))
}

/*
BigFloatSub
大数减法，只适用于浮点数
*/
func bigFloatSub(s1 string, s2 string) (sub string) {
	i1, d1 := toFloatArr(s1)
	i2, d2 := toFloatArr(s2)
	return toString(doBigFloatSub(i1, d1, i2, d2))
}

/*
BigFloatMultiply
大数乘法，只适用于浮点数
*/
func bigFloatMultiply(s1 string, s2 string) (multiply string) {
	i1, d1 := toFloatArr(s1)
	i2, d2 := toFloatArr(s2)
	return toString(doBigFloatMultiply(i1, d1, i2, d2))
}

/*
BigFloatDivide
大数除法，只适用于浮点数
*/
func bigFloatDivide(s1 string, s2 string, bit int) (multiple string) {
	i1, d1 := toFloatArr(s1)
	i2, d2 := toFloatArr(s2)
	return toString(doBigFloatDivide(i1, d1, i2, d2, bit))
}

func bigFloatReminder(s1 string, s2 string, bit int) (reminder string) {
	multiple := bigFloatDivide(s1, s2, bit)
	integer, _ := toFloatArr(multiple)
	return bigFloatSub(s1, bigFloatMultiply(s2, toString(integer)+makeFloatSuffix))
}
